import { isMpWeixin } from './platform'

/**
 * 多端存储工具
 * 统一封装localStorage和小程序storage
 */
export const storage = {
  /**
   * 设置存储
   * @param {string} key - 键名
   * @param {any} value - 存储值
   */
  set(key, value) {
    try {
      const data = typeof value === 'object' ? JSON.stringify(value) : value
      
      if (isMpWeixin() && typeof wx !== 'undefined') {
        // 微信小程序存储
        wx.setStorageSync(key, data)
      } else if (typeof localStorage !== 'undefined') {
        // Web/H5/App存储
        localStorage.setItem(key, data)
      }
    } catch (error) {
      console.error('存储设置失败:', error)
    }
  },
  
  /**
   * 获取存储
   * @param {string} key - 键名
   * @returns {any} 存储值
   */
  get(key) {
    try {
      let data
      
      if (isMpWeixin() && typeof wx !== 'undefined') {
        // 微信小程序获取存储
        data = wx.getStorageSync(key)
      } else if (typeof localStorage !== 'undefined') {
        // Web/H5/App获取存储
        data = localStorage.getItem(key)
      }
      
      // 尝试解析JSON
      if (data && typeof data === 'string') {
        try {
          return JSON.parse(data)
        } catch (e) {
          return data
        }
      }
      
      return data
    } catch (error) {
      console.error('存储获取失败:', error)
      return null
    }
  },
  
  /**
   * 移除存储
   * @param {string} key - 键名
   */
  remove(key) {
    try {
      if (isMpWeixin() && typeof wx !== 'undefined') {
        // 微信小程序移除存储
        wx.removeStorageSync(key)
      } else if (typeof localStorage !== 'undefined') {
        // Web/H5/App移除存储
        localStorage.removeItem(key)
      }
    } catch (error) {
      console.error('存储移除失败:', error)
    }
  },
  
  /**
   * 清空所有存储
   */
  clear() {
    try {
      if (isMpWeixin() && typeof wx !== 'undefined') {
        // 微信小程序清空存储
        wx.clearStorageSync()
      } else if (typeof localStorage !== 'undefined') {
        // Web/H5/App清空存储
        localStorage.clear()
      }
    } catch (error) {
      console.error('存储清空失败:', error)
    }
  }
}
